// components/Tabs/Tabs.js
Component({
  /**
   * 组件的属性列表
   * 设置组件数据的接收
   */
  properties: {
    // aaa:{
      // type 要接受的数据类型
      // type:"String",
      // value 默认值
      // value:""
    // },
    tabs:{
      type:"Array",
      value:[]
    }
  },

  /**
   * 组件的初始数据
   */
  data: { },
  /**
   * 1.页面.js 文件中 存放事件回调函数的时候 存放在data同层级下
   * 2.组件.js 文件中 存放事件回调函数的时候 必须存放在 methods中
   */
  methods: {
    hanldeItemTap (e) {
      // console.log(e);
      /*
      //  console.log(123); 
      1.绑定点击事件 需要在methods中绑定
      2.获取被点击的索引
      3.获取原数组
      4.对数组循环
        4.1给每一个循环项 选中属性 改成 false
        4.2给 当前的索引的项 添加激活选中效果

      5.点击事件触发的时候
        触发父组件中的自定义事件 同时传递数据给父组件
        this.triggerEvent("父组件自定义事件的名称"，要传递的参数)
      */
    //  获取索引
    const {index}=e.currentTarget.dataset;
    // 获取data中的数组
    // 触发父组件中的自定义事件 同时传递数据给父组件
    this.triggerEvent("itemChange", {index});
    // 最严谨的做法 重新拷贝一份数组，在对数据的备份进行处理
    // let tabs=JSON.parse(JSON.stringify(this.data.tabs))
    // 不要直接修改 this.data.数据
    // let {tabs}=this.data;
    // 循环数组   [].forEach 遍历数组 遍历数组的时候 修改了v,也会导致源数组被修改
    // tabs.forEach((v,i)=>i===index?v.isActive=true:v.isActive=false);
    // 重新设置tabs数组
    // this.setData({
    //   tabs
    // })
    }
  }
})
